/*
 * 
 * Tablecloth written by Alen Grakalic, provided by Css Globe (cssglobe.com)
 * please visit http://cssglobe.com/lab/tablecloth/
 * 
 */

this.tablecloth = function() {

	// CONFIG

	// 高亮显示列
	var highlightCols = false;

	// 高亮显示行
	var highlightRows = true;

	// if set to true then click on a table sell will select row or column based
	// on config
	var selectable = true;

	// this function is called when
	// add your own code if you want to add action
	// function receives object that has been clicked
	this.clickAction = function(obj) {
		// alert(obj.innerHTML);

	};

	// END CONFIG (do not edit below this line)

	var tableover = false;
	this.start = function() {
		var tables = document.getElementsByTagName("table");
		for (var i = 0; i < tables.length; i++) {
			tables[i].onmouseover = function() {
				tableover = true
			};
			tables[i].onmouseout = function() {
				tableover = false
			};
			rows(tables[i]);
		};
	};

	this.rows = function(table) {
		var css = "";
		var tr = table.getElementsByTagName("tr");
		for (var i = 0; i < tr.length; i++) {
			css = (css == "odd") ? "even" : "odd";
			tr[i].className = css;
			var arr = new Array();
			for (var j = 0; j < tr[i].childNodes.length; j++) {
				if (tr[i].childNodes[j].nodeType == 1)
					arr.push(tr[i].childNodes[j]);
			};
			for (var j = 0; j < arr.length; j++) {
				arr[j].row = i;
				arr[j].col = j;
				if (arr[j].innerHTML == "&nbsp;" || arr[j].innerHTML == "")
					arr[j].className += " empty";
				arr[j].css = arr[j].className;
				arr[j].onmouseover = function() {
					over(table, this, this.row, this.col);
				};
				arr[j].onmouseout = function() {
					out(table, this, this.row, this.col);
				};
				arr[j].onmousedown = function() {
					down(table, this, this.row, this.col);
				};
				arr[j].onmouseup = function() {
					up(table, this, this.row, this.col);
				};
				arr[j].onclick = function() {
					click(table, this, this.row, this.col);
				};
			};
		};
	};

	// appyling mouseover state for objects (th or td)
	this.over = function(table, obj, row, col) {
		if (!highlightCols && !highlightRows)
			obj.className = obj.css + " over";
		if (check1(obj, col)) {
			if (highlightCols)
				highlightCol(table, obj, col);
			if (highlightRows)
				highlightRow(table, obj, row);
		};
	};
	// appyling mouseout state for objects (th or td)
	this.out = function(table, obj, row, col) {
		if (!highlightCols && !highlightRows)
			obj.className = obj.css;
		unhighlightCol(table, col);
		unhighlightRow(table, row);
	};
	// appyling mousedown state for objects (th or td)
	this.down = function(table, obj, row, col) {
		obj.className = obj.css + " down";
	};
	// appyling mouseup state for objects (th or td)
	this.up = function(table, obj, row, col) {
		obj.className = obj.css + " over";
	};
	// onclick event for objects (th or td)
	this.click = function(table, obj, row, col) {
		if (check1) {
			if (selectable) {
				unselect(table);
				if (highlightCols)
					highlightCol(table, obj, col, true);
				if (highlightRows)
					highlightRow(table, obj, row, true);
				document.onclick = unselectAll;
			}
		};
		clickAction(obj);
	};

	this.highlightCol = function(table, active, col, sel) {
		var css = (typeof(sel) != "undefined") ? "selected" : "over";
		var tr = table.getElementsByTagName("tr");
		for (var i = 0; i < tr.length; i++) {
			var arr = new Array();
			for (j = 0; j < tr[i].childNodes.length; j++) {
				if (tr[i].childNodes[j].nodeType == 1)
					arr.push(tr[i].childNodes[j]);
			};
			var obj = arr[col];
			if (check2(active, obj) && check3(obj))
				obj.className = obj.css + " " + css;
		};
	};
	this.unhighlightCol = function(table, col) {
		var tr = table.getElementsByTagName("tr");
		for (var i = 0; i < tr.length; i++) {
			var arr = new Array();
			for (j = 0; j < tr[i].childNodes.length; j++) {
				if (tr[i].childNodes[j].nodeType == 1)
					arr.push(tr[i].childNodes[j])
			};
			var obj = arr[col];
			if (typeof(obj) != 'undefined' && check3(obj))
				obj.className = obj.css;
		};
	};
	this.highlightRow = function(table, active, row, sel) {
		var css = (typeof(sel) != "undefined") ? "selected" : "over";
		var tr = table.getElementsByTagName("tr")[row];
		for (var i = 0; i < tr.childNodes.length; i++) {
			var obj = tr.childNodes[i];
			if (check2(active, obj) && check3(obj))
				obj.className = obj.css + " " + css;
		};
	};
	this.unhighlightRow = function(table, row) {
		var tr = table.getElementsByTagName("tr")[row];
		for (var i = 0; i < tr.childNodes.length; i++) {
			var obj = tr.childNodes[i];
			if (check3(obj))
				obj.className = obj.css;
		};
	};
	this.unselect = function(table) {
		tr = table.getElementsByTagName("tr")
		for (var i = 0; i < tr.length; i++) {
			for (var j = 0; j < tr[i].childNodes.length; j++) {
				var obj = tr[i].childNodes[j];
				if (obj.className)
					obj.className = obj.className.replace("selected", "");
			};
		};
	};
	this.unselectAll = function() {
		if (!tableover) {
			tables = document.getElementsByTagName("table");
			for (var i = 0; i < tables.length; i++) {
				unselect(tables[i])
			};
		};
	};
	this.check1 = function(obj, col) {
		return (!(col == 0 && obj.className.indexOf("empty") != -1));
	}
	this.check2 = function(active, obj) {
		return (!(active.tagName == "TH" && obj.tagName == "TH"));
	};
	this.check3 = function(obj) {
		return (obj && obj.className)
				? (obj.className.indexOf("selected") == -1)
				: true;
	};

	start();

};

/* script initiates on page load. */
window.onload = tablecloth;


/**
 * 重新设置当前页面布局
 */
function dynamicLayoutDiv() {
	// 获取当前浏览器网页部分宽和高
	var wWidth = jQuery(window).width();
	var wHeight = jQuery(window).height();
	// 中间部分所有内容的DIV
	var contentDiv = jQuery(".content");
	contentDiv.css({
		        height : wHeight - 10
		});
	// 左边导航菜单栏DIV
	var leftNavDiv = jQuery(".left_nav");
	leftNavDiv.css({
		        height : wHeight - 10
		});
};
















